package com.sqsf.service.impl;

import com.sqsf.dao.AccountDao;
import com.sqsf.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service("accountService")
//如果一个类中拥有多个事务方法需要配置 不需要每个方法单独书写
@Transactional
//可以在类上统一定义 如果某个方法想单独设置不同的事务属性 可以单独设置
public class AccountServiceImpl implements AccountService {
    @Autowired
    private AccountDao accountDao;

    public void setAccountDao(AccountDao accountDao) {
        this.accountDao = accountDao;
    }

    //spring声明式事务注解开发
    //仅需要在开启注解事务配置后 在需要进行事务管理的方法上添加注解即可
    //@Transactional
    //为当前方法设置事务代理 并进行事务的默认设置
    //如果想设置其他的事务设置 可以通过属性进行设置
    //<tx:method name="*" isolation="DEFAULT" propagation="REQUIRED" timeout="-1" read-only="false"/>
    @Transactional(isolation = Isolation.DEFAULT,propagation = Propagation.REQUIRED,timeout = -1,readOnly = false)
    @Override
    public void zz(String out, String in, double money) {
        accountDao.updateSubMoneyByName(out,money);
        System.out.println(1/0);
        accountDao.updateAddMoneyByName(in,money);
    }
}
